
/*
 *  bmp文件读写
 */
#ifndef _UTIL_BMP_H
#define _UTIL_BMP_H

#include <stdint.h>

#ifdef __cplusplus
extern "C"
{
#endif

/*
 *  功能: 读取bmp格式图片
 *  参数:
 *      filePath: 文件地址
 *      width: 用以返回图片横向的像素个数
 *      height: 用以返回图片纵向的像素个数
 *      pixelBytes: 用以返回图片每像素占用字节数
 *
 *  返回: NULL失败,否则为图片RGB排列的数据指针 !! 用完需释放 !!
 */
uint8_t *UtilBmpGet(const char *filePath, uint32_t *width, uint32_t *height, uint32_t *pixelBytes);
uint8_t *UtilBmpGetBGRA(const char *filePath, uint32_t *width, uint32_t *height, uint32_t *pixelBytes);

/*
 *  创建图片,返回文件大小
 *  参数:
 *      filePath: 文件地址
 *      rgb: 图片矩阵数据的指针,rgb格式
 *      width: 图片横向的像素个数
 *      height: 图片纵向的像素个数
 *      pixelBytes: 图片每像素占用字节数
 *
 *  返回: 成功返回0 其它失败
 */
int32_t UtilBmpCreate(const char *filePath, uint8_t *rgb, uint32_t width, uint32_t height, uint32_t pixelBytes);

/*
 *  连续输出帧图片
 *  参数:
 *      order: 帧序号,用来生成图片名称效果如: 0001.bmp
 *      folder: 帧图片保存路径,格式如: /tmp
 *      data: 传入, 图片矩阵数据的指针,rgb格式
 *      width: 传入, 图片横向的像素个数
 *      height: 传入, 图片纵向的像素个数
 *      pixelBytes: 传入, 图片每像素占用字节数
 */
void UtilBmpCreate2(int32_t order, char *folder, uint8_t *data, uint32_t width, uint32_t height, uint32_t pixelBytes);

#ifdef __cplusplus
}
#endif

#endif
